package com.vm.osm.business.service;

import com.vm.osm.business.dto.req.logic_equ.AddLogicEquReq;
import com.vm.osm.business.dto.req.logic_equ.ImportLogicEquReq;
import com.vm.osm.business.dto.req.logic_equ.LogicEquPageReq;
import com.vm.osm.business.dto.req.logic_equ.UpdateLogicEquReq;
import com.vm.osm.business.dto.rsp.logic_equ.GetLogicEquDetailRsp;
import com.vm.osm.business.dto.rsp.logic_equ.LogicEquBelonger;
import com.vm.osm.business.dto.rsp.logic_equ.LogicEquPageRsp;
import com.vm.osm.business.entity.OsmLogicEqu;

import java.util.List;
import java.util.Map;

/**
 * 逻辑设备服务接口
 *
 * @author Xuerong Xue
 */
public interface IOsmLogicEquService extends IBaseService<OsmLogicEqu, String> {

    /**
     * 分页查询
     *
     * @param request 查询参数 {@link LogicEquPageReq}
     * @return 分页数据 {@link LogicEquPageRsp}
     */
    LogicEquPageRsp page(LogicEquPageReq request);

    /**
     * 获取设备详情
     *
     * @param id 设备Id
     */
    GetLogicEquDetailRsp detail(String id);

    /**
     * 删除设备
     *
     * @param id 设备Id
     */
    void delete(String id);

    /**
     * 批量删除设备
     *
     * @param ids 设备Id列表
     */
    void batchDelete(List<String> ids);

    /**
     * 设备所属候选
     *
     * @param company_id 企业Id
     */
    List<LogicEquBelonger> candidate(String company_id);

    /**
     * 新增
     *
     * @param request 请求参数
     */
    void add(AddLogicEquReq request);

    /**
     * 更新
     *
     * @param request 请求参数
     */
    void update(UpdateLogicEquReq request);

    /**
     * 按条件查询单个
     *
     * @param params 查询条件
     * @return 记录
     */
    OsmLogicEqu get(Map<String, Object> params);
}
